Conventional Commits
https://avatars.githubusercontent.com/u/42154238?s=200&v=4#.png
人間と機械が読みやすく、意味のあるコミットメッセージにするための仕様
フォーマット
code:md
commitlintでコミットメッセージのLintができるようになっているので使用する場合はセットと考えると良さそう 例
feat: allow provided config object to extend other configs
chore!: drop support for Node 6
docs: correct spelling of CHANGELOG
公式の主張するメリット
公式サイトより引用
- 変更履歴 (CHANGELOG) を自動的に生成できる
- Semantic Version (SemVer)単位で自動的に履歴をまとめられる - チームメイトや一般のユーザー、およびその他の利害関係者へ変更の内容を伝えられる
- ビルドや公開の処理をトリガーできる
- より構造化されたコミット履歴を調査できるようにすることで、人々があなたのプロジェクトに貢献しやすくなる
良さそうだと感じた点
コミットメッセージからCHANGELOGを自動生成できる点
コミットメッセージに制約が発生することでコミット粒度が意味のある単位になりそうな点
疑問だと思った点
コミットメッセージがフォーマット外のものが含まれると自動生成やバージョニングの恩恵の外になる
コミットメッセージがより重要視されるようになるが最初期は手に馴染むまで大変かもしれない
squash merge を推奨していそう(?)な点
個人的には squash merge は contributions を吹き飛ばす性質があるので自身のマインドにマッチしていない
Pull Requestベースの開発を行っている場合はPR名やマージ時点でメッセージを決定できるのでそれで回避できるならそれが良さそうと思った
Lintingでは人間のストレスを緩和できない
コミットメッセージの規約がここまで決まっているので Commitizen のようなメッセージをフォーマットに沿って生成する仕組みを使うと良さそう